# 中间件
from django.http import *

'''
from django.utils.deprecation import MiddlewareMixin
高版本的中间件类需要继承 MiddlewareMixin
'''


class Mymiddleware():
    # 1.初始化中间件
    def __init__(self):
        '''
        初始化,不需要任何的参数,服务器响应第一个请求的时候调用一次,用于确定是否启动当前的中间件
        '''
        print("我是__init__中间件")

    # 2.处理请求之前(还没有去找路由)
    def process_request(self, request):
        print("我是process_request 方法")
        return None  # 只有返回None值才会去找路由
        # return HttpResponse("sb")

    # 3.处理视图之前(找到了路由,视图函数处理之前)
    def process_view(self, request, view_func, view_args, view_kwargs):
        print("我是process_view方法")
        return None
        # return HttpResponse("就tm不让你跳转")

    # 4.处理响应模板之前
    def process_template_response(self, request, response):
        print("这是执行完视图函数之后,响应模板之前(html文件)")
        print("我是process_template_response ")
        return response

    # 5.处理响应之后,所有的响应返回浏览器之前调用,在每个请求调用,返回HttpResponse对象
    def process_response(self, request, response):
        print("我是process_Response对象")
        # return HttpResponse("ok")
        return response

    # 6. 异常处理:当视图抛出异常时调用,
    # def process_exception(self, request, exception):
    #     print("我是异常方法")
    #     return HttpResponse("视图函数抛出错误")
